package com.siyu.model.dispatch.io;




import com.siyu.model.dispatch.utils.ReserviorTimeResult;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;


public class SingleDamOutput {
    private String reservoirName;  // 水库名称

    private String reservoirID;  // 水库ID

    private List<ReserviorTimeResult> timeDataList;  //时间,时段编号

    private List<Double> OperationRunoffData;  // 入库来水

    private List<Double> UpLevelLimitArray;  // 各个时段水位上限

    private List<Double> DownLevelLimitArray;  // 各个时段水位下限

    private List<Double> UpQreleaseLimitArray;  // 各时段下泄流量上限

    private List<Double> DownQreleaseLimitArray;  // 各时段下泄流量下限

    private List<Double> OptimalLine_Volume;  // 最优过程的时段初库容

    private List<Double> OptimalLine_Level;  // 最优过程的时段初水位

    private List<Double> MaxQreleaseFromLQ;  // 各时段最大泄流能力

    private List<Double> OptimalLine_Qrelease;  // 各时段下泄流量

    private double InitialLevel;  // 初始水位

    private double FloodPeak;  // 入库洪峰

    private double FloodVolume;  // 入库洪量

    private double FloodDischarge;  // 最大泄洪（出库洪峰）

    private double FloodRetention;  // 拦蓄洪量

    private double PeakClippingRate;  // 削峰率

    private String Suggestion;  // 调度建议

    private double Grade;  // 方案评分

    private String RKPeakTime;  // 入库峰现时间

    private String MaxLevelTime;  // 最高水位出现时间

    private String CKPeakTime;  // 出库峰现时间

    private double MaxLevel;  // 最高水位

    private boolean MaxLevelExceedStandard;  // 最高水位是否超标准

    private boolean MaxLevelExceedLimit;  // 最高水位是否超汛限

    private double CKVolume;  // 出库洪量

    private double EndLevel;  // 调度期末水位r

    private boolean EndLevelExceedLimit;  // 末水位是否超过汛期

    private List<Double> IntervalRunoffData;  //各时段区间入流

    private List<Double> DownstreamSectionInflow;  //下游断面各时段来流

    private String overStandardTime;  // 超标准时段

    private String overLimitTime;  // 超讯限时段

    public List<ReserviorTimeResult> getTimeDataList() {
        return timeDataList;
    }

    public void setTimeDataList(List<ReserviorTimeResult> timeDataList) {
        this.timeDataList = timeDataList;
    }

    public List<Double> getOperationRunoffData() {
        return OperationRunoffData;
    }

    public void setOperationRunoffData(List<Double> operationRunoffData) {
        OperationRunoffData = operationRunoffData;
    }

    public List<Double> getUpLevelLimitArray() {
        return UpLevelLimitArray;
    }

    public void setUpLevelLimitArray(List<Double> upLevelLimitArray) {
        UpLevelLimitArray = upLevelLimitArray;
    }

    public List<Double> getDownLevelLimitArray() {
        return DownLevelLimitArray;
    }

    public void setDownLevelLimitArray(List<Double> downLevelLimitArray) {
        DownLevelLimitArray = downLevelLimitArray;
    }

    public List<Double> getUpQreleaseLimitArray() {
        return UpQreleaseLimitArray;
    }

    public void setUpQreleaseLimitArray(List<Double> upQreleaseLimitArray) {
        UpQreleaseLimitArray = upQreleaseLimitArray;
    }

    public List<Double> getDownQreleaseLimitArray() {
        return DownQreleaseLimitArray;
    }

    public void setDownQreleaseLimitArray(List<Double> downQreleaseLimitArray) {
        DownQreleaseLimitArray = downQreleaseLimitArray;
    }

    public List<Double> getOptimalLine_Volume() {
        return OptimalLine_Volume;
    }

    public void setOptimalLine_Volume(List<Double> optimalLine_Volume) {
        OptimalLine_Volume = optimalLine_Volume;
    }

    public List<Double> getOptimalLine_Level() {
        return OptimalLine_Level;
    }

    public void setOptimalLine_Level(List<Double> optimalLine_Level) {
        OptimalLine_Level = optimalLine_Level;
    }

    public List<Double> getMaxQreleaseFromLQ() {
        return MaxQreleaseFromLQ;
    }

    public void setMaxQreleaseFromLQ(List<Double> maxQreleaseFromLQ) {
        MaxQreleaseFromLQ = maxQreleaseFromLQ;
    }

    public List<Double> getOptimalLine_Qrelease() {
        return OptimalLine_Qrelease;
    }

    public void setOptimalLine_Qrelease(List<Double> optimalLine_Qrelease) {
        OptimalLine_Qrelease = optimalLine_Qrelease;
    }

    public String getReservoirName() {
        return reservoirName;
    }

    public void setReservoirName(String reservoirName) {
        this.reservoirName = reservoirName;
    }

    public String getReservoirID() {
        return reservoirID;
    }

    public void setReservoirID(String reservoirID) {
        this.reservoirID = reservoirID;
    }

    public double getInitialLevel() {
        return InitialLevel;
    }

    public void setInitialLevel(double initialLevel) {
        InitialLevel = initialLevel;
    }

    public double getFloodPeak() {
        return FloodPeak;
    }

    public void setFloodPeak(double floodPeak) {
        FloodPeak = floodPeak;
    }

    public double getFloodVolume() {
        return FloodVolume;
    }

    public void setFloodVolume(double floodVolume) {
        FloodVolume = floodVolume;
    }

    public double getFloodDischarge() {
        return FloodDischarge;
    }

    public double getFloodRetention() {
        return FloodRetention;
    }

    public double getPeakClippingRate() {
        return PeakClippingRate;
    }

    public String getSuggestion() {
        return Suggestion;
    }

    public void setSuggestion(String suggestion) {
        Suggestion = suggestion;
    }

    public double getGrade() {
        return Grade;
    }

    public void setGrade(double grade) {
        Grade = grade;
    }

    public String getRKPeakTime() {
        return RKPeakTime;
    }

    public void setRKPeakTime(String RKPeakTime) {
        this.RKPeakTime = RKPeakTime;
    }

    public String getMaxLevelTime() {
        return MaxLevelTime;
    }

    public void setMaxLevelTime(String maxLevelTime) {
        MaxLevelTime = maxLevelTime;
    }

    public String getCKPeakTime() {
        return CKPeakTime;
    }

    public void setCKPeakTime(String CKPeakTime) {
        this.CKPeakTime = CKPeakTime;
    }

    public double getMaxLevel() {
        return MaxLevel;
    }

    public void setMaxLevel(double maxLevel) {
        MaxLevel = maxLevel;
    }

    public String getMaxLevelExceedStandard() {
        return MaxLevelExceedStandard ? "是" : "否";
    }

    public void setMaxLevelExceedStandard(boolean maxLevelExceedStandard) {
        MaxLevelExceedStandard = maxLevelExceedStandard;
    }

    public String getMaxLevelExceedLimit() {
        return MaxLevelExceedLimit ? "是" : "否";
    }

    public void setMaxLevelExceedLimit(boolean maxLevelExceedLimit) {
        MaxLevelExceedLimit = maxLevelExceedLimit;
    }

    public double getCKVolume() {
        return CKVolume;
    }

    public void setCKVolume(double CKVolume) {
        this.CKVolume = CKVolume;
    }

    public double getEndLevel() {
        return EndLevel;
    }

    public void setEndLevel(double endLevel) {
        EndLevel = endLevel;
    }

    public String getEndLevelExceedLimit() {
        return EndLevelExceedLimit ? "是" : "否";
    }

    public void setEndLevelExceedLimit(boolean endLevelExceedLimit) {
        EndLevelExceedLimit = endLevelExceedLimit;
    }

    public void setFloodDischarge(double floodDischarge) {
        FloodDischarge = floodDischarge;
    }

    public void setFloodRetention(double floodRetention) {
        FloodRetention = floodRetention;
    }

    public void setPeakClippingRate(double peakClippingRate) {
        PeakClippingRate = peakClippingRate;
    }

    public List<Double> getIntervalRunoffData() {
        return IntervalRunoffData;
    }

    public void setIntervalRunoffData(List<Double> intervalRunoffData) {
        IntervalRunoffData = intervalRunoffData;
    }

    public List<Double> getDownstreamSectionInflow() {
        return DownstreamSectionInflow;
    }

    public void setDownstreamSectionInflow(List<Double> downstreamSectionInflow) {
        DownstreamSectionInflow = downstreamSectionInflow;
    }

    public String getOverStandardTime() {
        return overStandardTime;
    }

    public void setOverStandardTime(String overStandardTime) {
        this.overStandardTime = overStandardTime;
    }

    public String getOverLimitTime() {
        return overLimitTime;
    }

    public void setOverLimitTime(String overLimitTime) {
        this.overLimitTime = overLimitTime;
    }
}
